package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import entidade.CompraRevista;
import entidade.RevistaEdicaoPedido;

public class VisualizaPedidosDAO {

	private Connection connection;

	public VisualizaPedidosDAO() throws SQLException
	{
		this.connection = ConnectionFactory.getConnection();
	}

	public List<RevistaEdicaoPedido> listaRevistasByIdCompra(String IDCompraRevista) throws SQLException
	{
		PreparedStatement stmt = this.connection.prepareStatement(
			"select r.Nome, re.Periodo, re.Data, re.PrecoUnitario, s.quantidade " +
			"from seleciona s, revista_edicao re, revista r " +
			"where (s.IDCompraRevista = ?) and (s.IDRevistaEdicao = re.IDRevistaEdicao) " +
			"and (re.IDRevista = r.IDRevista)"
		);
		stmt.setString(1, IDCompraRevista); // Preenche o '?' da consulta com o IDCompraRevista.
		ResultSet rs = stmt.executeQuery();
		List<RevistaEdicaoPedido> listaDeRevistas = new ArrayList<RevistaEdicaoPedido>();

		while(rs.next()) {
			RevistaEdicaoPedido revista = new RevistaEdicaoPedido();

			revista.setNome(rs.getString("Nome"));
			revista.setPeriodo(rs.getString("Periodo"));
			revista.setData(rs.getString("Data"));
			revista.setPrecoUnitario(rs.getFloat("PrecoUnitario"));
			revista.setQuantidade(rs.getInt("quantidade"));

			listaDeRevistas.add(revista);
		}

		rs.close();
		stmt.close();

		return listaDeRevistas;
	}

	public List<CompraRevista> listaPedidosByCPF(String CPF) throws SQLException
	{
		PreparedStatement stmt = this.connection.prepareStatement(
			"select c.IDCompraRevista, c.DataCompra, c.Situacoes, fp.Forma " +
			"from compra_revista c, forma_pagamento fp " +
			"where c.CPF = ? and (fp.IDFormaPagamento = c.IDFormaPagamento)"
		);
		stmt.setString(1, CPF); // Preenche o '?' da consulta com o CPF.
		ResultSet rs = stmt.executeQuery();
		List<CompraRevista> listaDePedidos = new ArrayList<CompraRevista>();

		while(rs.next()) {
			CompraRevista pedido = new CompraRevista();

			pedido.setIdCompraRevista(rs.getString("IDCompraRevista"));
			pedido.setDataCompra(rs.getString("DataCompra"));
			pedido.setSituacao(rs.getString("Situacoes"));
			pedido.setFormaPagamento(rs.getString("Forma"));

			listaDePedidos.add(pedido);
		}

		rs.close();
		stmt.close();

		return listaDePedidos;
	}

}
